g_assert (gtk_widget_get_next_sibling (l2) == NULL);
}
-int main (int argc, char **argv)
+static void
+reorder_refcount (void)
+{
+ GtkWidget *p = gtk_label_new ("");
+ GtkWidget *l1 = gtk_label_new ("");
+ GtkWidget *l2 = gtk_label_new ("");
+
+ g_assert (g_object_is_floating (l1));
+ g_assert (G_OBJECT (l1)->ref_count == 1);
+
+ gtk_widget_set_parent (l1, p);
+
+ g_assert (!g_object_is_floating (l1));
+ g_assert (G_OBJECT (l1)->ref_count == 1);
+
+ g_assert (g_object_is_floating (l2));
+ g_assert (G_OBJECT (l2)->ref_count == 1);
+
+ gtk_widget_set_parent (l2, p);
+
+ g_assert (!g_object_is_floating (l2));
+ g_assert (G_OBJECT (l2)->ref_count == 1);
+
+ g_assert (gtk_widget_get_next_sibling (l1) == l2);
+
+ gtk_widget_insert_before (l2, p, l1);
+
+ g_assert (gtk_widget_get_prev_sibling (l1) == l2);
+
+ g_assert (G_OBJECT (l1)->ref_count == 1);
+ g_assert (G_OBJECT (l2)->ref_count == 1);
+
+ gtk_widget_unparent (l1);
+ gtk_widget_unparent (l2);
+ g_object_unref (g_object_ref_sink (p));
+}
+
+int
+main (int argc, char **argv)
{
gtk_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/widgetorder/same-after", same_after);
g_test_add_func ("/widgetorder/same-before", same_before);
g_test_add_func ("/widgetorder/no-loop", no_loop);
+ g_test_add_func ("/widgetorder/reorder-refcount", reorder_refcount);
return g_test_run ();
}